// 目录创建之异步实现
const fs = require('fs')
const path = require('path')
// 工具包 promisify Promise化改造
const { promisify } = require('util')

// function mkDir (dirPath, cb){
//   // 分割路径 --这里写死了分隔符
//   let parts = dirPath.split('/')
//   let index = 1

//   function next () {
//     if (index > parts.length){// 目录处理完毕，执行回调并退出递归循环
//       cb && cb()
//       return
//     }

//     // 组合路径
//     let current = parts.slice(0, index++).join('/')

//     fs.access(current, (err) => {
//       if (err) {//权限判定错误 路径目录不存在
//         fs.mkdir(current, next)
//       }else{//目录存在 继续执行下一级目录
//         next()
//       }
//     })
//   }
//   next()
// }

// mkDir('a/b/c', () => {
//   console.log('创建成功')
// })

// 将 access、mkdir 进行promisify
const access = promisify(fs.access)
const mkdir = promisify(fs.mkdir)

async function myMkdir (dirPath, cb){
  let parts = dirPath.split('/')
  for(let i = 1;i <= parts.length; i++) {
    let current = parts.slice(0,i).join('/')
    try {
      await access(current)
    } catch (error) {
      await mkdir(current)
    }
  }
  cb && cb()
}

myMkdir('a/b/c', () => {
  console.log('创建成功')
})
